0b41e64de6e811a4c1e8d03bc55c343da502cd63,name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/DABPDFExctractor.java,DABPDFExctractor,addSellTransaction,#,76
Before Change
.match("^STK (?<shares>\\d+(,\\d+)?) (\\w{3}+) ([\\d.]+,\\d+)$")
.assign((t, v) -> t.setShares(asShares(v.get("shares"))))
.section("amount", "currency") //
.find("Wert Konto-Nr. Betrag zu Ihren Gunsten")
.match("^(\\d+.\\d+.\\d{4}+) ([0-9]*) (?<currency>\\w{3}+) (?<amount>[\\d.]+,\\d+)$")
.assign((t, v) -> {
t.setAmount(asAmount(v.get("amount")));
t.setCurrencyCode(asCurrencyCode(v.get("currency")));
})
.section("date") //
.match("^Handelstag (?<date>\\d+.\\d+.\\d{4}+) .*$")
.assign((t, v) -> t.setDate(asDate(v.get("date"))))
.section("fees", "currency").optional()
.match("^.*Provision (?<currency>\\w{3}+) (?<fees>[\\d.]+,\\d+)-$")
.assign((t, v) -> t.getPortfolioTransaction().addUnit(new Unit(Unit.Type.FEE,
Money.of(asCurrencyCode(v.get("currency")), asAmount(v.get("fees"))))))
.section("fees", "currency").optional()
After Change
.match("^STK (?<shares>\\d+(,\\d+)?) (\\w{3}+) ([\\d.]+,\\d+)$")
.assign((t, v) -> t.setShares(asShares(v.get("shares"))))
.section("amount", "currency").optional() //
.find("Wert Konto-Nr. Betrag zu Ihren Gunsten")
.match("^(\\d+.\\d+.\\d{4}+) ([0-9]*) (?<currency>\\w{3}+) (?<amount>[\\d.]+,\\d+)$")
.assign((t, v) -> {
t.setAmount(asAmount(v.get("amount")));
t.setCurrencyCode(asCurrencyCode(v.get("currency")));
})
.section("amount", "currency", "exchangeRate", "forex", "forexCurrency").optional() //
.find("Verwahrart Wertpapierrechnung Ausmachender Betrag (?<forexCurrency>\\w{3}+) (?<forex>[\\d.]+,\\d+)")
.find("Wert Konto-Nr. Devisenkurs Betrag zu Ihren Gunsten")
.match("^(\\d+.\\d+.\\d{4}+) ([0-9]*) .../... (?<exchangeRate>[\\d.]+,\\d+) (?<currency>\\w{3}+) (?<amount>[\\d.]+,\\d+)$")
.assign((t, v) -> {
Money amount = Money.of(asCurrencyCode(v.get("currency")), asAmount(v.get("amount")));
t.setMonetaryAmount(amount);
BigDecimal exchangeRate = BigDecimal.ONE.divide( //
asExchangeRate(v.get("exchangeRate")), 10, BigDecimal.ROUND_HALF_DOWN);
Money forex = Money.of(asCurrencyCode(v.get("forexCurrency")), asAmount(v.get("forex")));
Unit grossValue = new Unit(Unit.Type.GROSS_VALUE, amount, forex, exchangeRate);
t.getPortfolioTransaction().addUnit(grossValue);
})
.section("date") //
.match("^Handelstag (?<date>\\d+.\\d+.\\d{4}+) .*$")
.assign((t, v) -> t.setDate(asDate(v.get("date"))))
.section("fees", "currency").optional()
.match("^.*Provision (?<currency>\\w{3}+) (?<fees>[\\d.]+,\\d+)-$").assign((t, v) -> {
String currency = asCurrencyCode(v.get("currency"));
if (currency.equals(t.getAccountTransaction().getCurrencyCode()))
{
t.getPortfolioTransaction().addUnit(
new Unit(Unit.Type.FEE, Money.of(currency, asAmount(v.get("fees")))));
}
})
.section("fees", "currency").optional()
.match("^.*Kapitalertragsteuer (?<currency>\\w{3}+) (?<fees>[\\d.]+,\\d+)-?$")
.assign((t, v) -> t.getPortfolioTransaction().addUnit(new Unit(Unit.Type.FEE,
Money.of(asCurrencyCode(v.get("currency")), asAmount(v.get("fees"))))))
.section("fees", "currency").optional()
.match("^.*Solidaritätszuschlag (?<currency>\\w{3}+) (?<fees>[\\d.]+,\\d+)-?$")
.assign((t, v) -> t.getPortfolioTransaction().addUnit(new Unit(Unit.Type.FEE,
Money.of(asCurrencyCode(v.get("currency")), asAmount(v.get("fees"))))))
.section("fees", "currency").optional()
.match("^.*Kirchensteuer (?<currency>\\w{3}+) (?<fees>[\\d.]+,\\d+)-?$")
.assign((t, v) -> t.getPortfolioTransaction().addUnit(new Unit(Unit.Type.FEE,
Money.of(asCurrencyCode(v.get("currency")), asAmount(v.get("fees"))))))
.wrap(t -> new BuySellEntryItem(t)));
}